/*
 *  Copyright (c) Skrumtious
 */
package com.skrumtious.backend;

import com.skrumtious.backend.persistence.SkrumItem;
import com.skrumtious.backend.persistence.SkrumTab;

/**
 * The skrum service backend.
 * 
 * @author Tony
 *
 */
public interface SkrumService {

	/**
	 * Get the skrum list for a user.
	 * 
	 * @param request
	 * @return
	 * @throws Exception
	 */
	DoGetSkrumListResponse getSkrumList(DoGetSkrumListRequest request) throws Exception;
	
	/**
	 * Adds a {@link SkrumItem}.
	 * 
	 * @param request
	 * @return
	 * @throws Exception
	 */
	DoAddSkrumItemResponse addSkrumItem(DoAddSkrumItemRequest request) throws Exception;
	
	/**
	 * Removes a {@link SkrumItem}.
	 * 
	 * @param request
	 * @return
	 * @throws Exception
	 */
	DoRemoveSkrumItemResponse removeSkrumItem(DoRemoveSkrumItemRequest request) throws Exception;
	
	/**
	 * Reorders the position of a {@link SkrumItem}.
	 * 
	 * @param request
	 * @return
	 * @throws Exception
	 */
	DoReorderSkrumItemResponse reorderSkrumItem(DoReorderSkrumItemRequest request) throws Exception;
	
	/**
	 * Adds a {@link SkrumTab}.
	 * 
	 * @param request
	 * @return
	 * @throws Exception
	 */
	DoAddSkrumTabResponse addSkrumTab(DoAddSkrumItemRequest request) throws Exception;
	
	/**
	 * Removes a {@link SkrumTab}.
	 * 
	 * @param request
	 * @return
	 * @throws Exception
	 */
	DoRemoveSkrumTabResponse removeSkrumTab(DoRemoveSkrumItemRequest request) throws Exception;
	
	/**
	 * Adds a user
	 * @param request
	 * @return
	 */
	DoAddUserResponse addUser(DoAddUserRequest request);
}
